package com.lnsystem.service;

import java.util.List;

import com.lnsystem.model.StockDailyData;

//consider extending this interface if different flavors of the methods in this interface are
// needed in the future.
public interface ScheduledTask {
	
	/**
	 * updates the stock symbols list in stock table
	 */
	public void updateSymbols(); // get the latest list of stocks and update the database.
	
	
	/**
	 * gets the historical data for all symbols and calculates sma10,sma50,sma200, and optionally ema10,ema8,bollinger values
	 */
	public void getHistoricalData(); // for all symbols, one-time job to download historical data and calculate TI


	/**
	 * gets the today's data for all symbols and calculates sma10,sma50,sma200, and optionally ema10,ema8,bollinger values
	 */
	public void getDailyData();  // for all symbols, get today's data, and calculate TI (technical indicators)
	
	
    /**
     * Calculates moving average for historical stock data in a StockDailyData list for a particular stock 
     * 
     * @param stockList - updated StockDailyData list with one or more newly added closing price
     * @param days  - SMA days
     */
	public void calculateSMA(List<StockDailyData> stockList, int days);
	
    /**
     * Calculates exponential moving average for historical stock data in a StockDailyData list for a particular stock 
     * 
     * @param stockList - updated StockDailyData list with one or more newly added closing price
     * @param days  - EMA days
     */
	public void calculateEMA(List<StockDailyData> stockList, int days);
	
	/**
	 * for all symbols, this will get today's data and calculate tech indicators.
	 */
	public void calculateBB(List<StockDailyData> stockList, int maDays, double numDev);
	
	
	/*
	public void calculateMovingAverages(); 
	public void calculateBollingerBandValues();
	*/
}
